; 设置窗口透明度的快捷键
; Ctrl + Alt + 数字键 1-9 调整透明度（1为最透明，9为不透明）

MsgBox("Ctrl + Alt + [1-9] 调整透明度百分比`n"
    . "Ctrl + Alt + 0 设置窗口为不透明`n"
    . "Ctrl + Alt + Shift + [+] 增加透明度`n"
    . "Ctrl + Alt + [-] 减少透明度")

^!1:: SetTransparency(Floor(255 * 0.1))  ; Ctrl + Alt + 1：设置透明度为 10%
^!2:: SetTransparency(Floor(255 * 0.2))  ; Ctrl + Alt + 2：设置透明度为 20%
^!3:: SetTransparency(Floor(255 * 0.3))  ; Ctrl + Alt + 3：设置透明度为 30%
^!4:: SetTransparency(Floor(255 * 0.4))  ; Ctrl + Alt + 4：设置透明度为 40%
^!5:: SetTransparency(Floor(255 * 0.5))  ; Ctrl + Alt + 5：设置透明度为 50%
^!6:: SetTransparency(Floor(255 * 0.6))  ; Ctrl + Alt + 6：设置透明度为 60%
^!7:: SetTransparency(Floor(255 * 0.7))  ; Ctrl + Alt + 7：设置透明度为 70%
^!8:: SetTransparency(Floor(255 * 0.8))  ; Ctrl + Alt + 8：设置透明度为 80%
^!9:: SetTransparency(Floor(255 * 0.9))  ; Ctrl + Alt + 9：设置透明度为 90%
^!0:: SetTransparency(255) ; Ctrl + Alt + 0：设置窗口为不透明（255）
^!+:: AddTransparency(10) ; Ctrl + Alt + Shift + 加号：增加透明度 10 在键盘上，加号 键（+）通常需要按下 Shift 才能输入。因此，^!+:: 表示的是 Ctrl + Alt + Shift + 加号，而不是 Ctrl + Alt + 等号（=）。
^!-:: SubTransparency(10) ; Ctrl + Alt + 减号：减少透明度 10

; 变量 记录窗口id与其对应的透明度
global WinTransparency := Map()

; 设置窗口透明度的函数
SetTransparency(Transparency) {
    ; MsgBox("设置窗口透明度为 ")
    ActiveWindow := WinGetID("A") ; 获取当前活动窗口的ID
    WinTransparency[ActiveWindow] := Transparency ; 记录窗口id与其对应的透明度
    WinSetTransparent(Transparency, ActiveWindow) ; 设置透明度
}

; 增加窗口透明度的函数
AddTransparency(Transparency) {
    ActiveWindow := WinGetID("A") ; 获取当前活动窗口的ID
    if (!WinTransparency.Has(ActiveWindow)) { ; 如果当前窗口没有记录过透明度，则设置默认值
        currentTransparency := WinGetTransparent(ActiveWindow) ; 获取当前窗口的透明度
        if (currentTransparency == "") { ; 如果返回值为空字符串
            currentTransparency := 255 ; 设置默认值
        }
        WinTransparency[ActiveWindow] := currentTransparency
    }

    if (WinTransparency[ActiveWindow] + Transparency <= 255) {
        WinTransparency[ActiveWindow] += Transparency
    } else {
        WinTransparency[ActiveWindow] = 255
    }
    WinSetTransparent(WinTransparency[ActiveWindow], ActiveWindow) ; 设置透明度
}

; 减少窗口透明度的
SubTransparency(Transparency) {
    ActiveWindow := WinGetID("A") ; 获取当前活动窗口的ID
    if (!WinTransparency.Has(ActiveWindow)) { ; 如果当前窗口没有记录过透明度，则设置默认值
        currentTransparency := WinGetTransparent(ActiveWindow) ; 获取当前窗口的透明度
        if (currentTransparency == "") { ; 如果返回值为空字符串
            currentTransparency := 255 ; 设置默认值
        }
        WinTransparency[ActiveWindow] := currentTransparency
    }

    if (WinTransparency[ActiveWindow] - Transparency >= 0) {
        WinTransparency[ActiveWindow] -= Transparency
    } else {
        WinTransparency[ActiveWindow] = 0
    }
    WinSetTransparent(WinTransparency[ActiveWindow], ActiveWindow) ; 设置透明度
}
